FIG. 2 is a block diagram showing the basic overall construction of a conventional printing system.
Generally, as shown in FIG. 2, a host computer 2000 and a printer device 2100 connected through a parallel communications means called a centronics interface and a network communications means form a printing system.
The host computer 2000 runs word processor, spreadsheet and other such application software 2001 (hereinafter “applications”) on a so-called operating system (OS) such as Windows (Microsoft Corp. registered trademark). When using an application 2001 to print, such printing is carried out using functions of a graphic sub-system 2002 of a number of sub-systems provided from that program by the OS. In Windows™ this graphic sub-system 2002 is called a GDI 2004 (Graphical Device Interface), and controls the processing of image data for the display and the printer. In order to accommodate dependency on each display and printer device, the GDI 2004 actively links a module called a device driver to process output to each of these devices. The module for the printer device 2100 is called a printer driver 2005. At the printer driver 2005, it is necessary to prepare a function group called a DDI (Device Driver Interface) that is already determined to be loaded into the device driver according to the capabilities and functions of the device. When the GDI 2004 converts an API (Application Programming Interface) call by the application 2001 into data for the device driver and the DDI function group is called by the appropriate GDI 2004 so as to execute a predetermined print process. Thus print requests from the application 2001 are sequentially processed through the printer driver 2005 by the GDI 2004. The printer driver 2005 has functions having an image mode that renders data up to an output image data format and a PDL (Printer Description Language) mode that generates PDL commands for a rendering-processible printer.
First, a description is given of the PDL mode type of printer driver.
The printer driver 2005 is configured to generate a PDL command with every DDI function. The generated print commands are sequentially stored as a single-page spool file 2006 through the GDI 2004. When data of one page has been stored, the data is sent to the printer device 2100 via an I/F 2007.
When the printer device 2100 receives the print command, the printer device 2100 temporarily stores the print command in a reception buffer 2103 and analyzes it at a command analyzer 2007. As a result of that analysis, intermediate data that can be processed at high speed by the printer device 2100 is generated and stored in an intermediate language storage area of a page memory 2106. When a page of such intermediate data is stored in the page memory 2106, a list structure (hereinafter “band list”) is created in order of registration for each band area that is a processing unit in the printer device 2100. The intermediate language linked to the band list is converted into image data rendered for the band memory area within the page memory 2106 by the hardware and the software.
The image data thus rendered in the band memory is converted into a video signal (“shipping”) in synchronism with an operation of a printer engine 2110. By preparing two such band memory areas and using them alternatively, it is possible to synchronize rendering and shipping with the operation of the printer engine 2110 within a small memory area. However, in the PDL mode processing described above, all the data gotten from the DDI function is generated as draw commands, and therefore PDL commands are generated only to the extent that the application 2001 issues a large number of draw commands. By contrast, however, the memory capacity of the printer device 2100 is limited, and therefore the printer device 2100 implements printing with methods like the following.
[A] Sub-close Method
1. When the amount of intermediate language data no longer fits into the page memory, the intermediate language data stored up to that point is rendered in the band memory and compressed (using PackBits, Run-Length, JPEG compression, etc.), and held as intermediate data (for all bands relating to the drawing object).
2. The intermediate language data that has been rendered is erased, thus increasing empty memory area in the page memory.
3. The intermediate language data that previously could not be stored is now stored in the empty memory area. If an entire data of a page does fit, then compressed image data generated in above (1) is treated as intermediate language data, making the rendering in a band unit possible in synchronism with the operation of the printer engine (synchronized band rendering processing).
4. If data of the page still does not fit after the processings described above are performed, then the process described in above (1) is carried out once more (that is, already-registered compressed image data is rendered first and then new intermediate data is rendered, after which the rendered image data is re-compressed).
[B] Pre-band Method
When intermediate language data is concentrated at a single band, the rendering processes is sometimes not up to the print speed of a printer engine. In that case, when the intermediate language data is registered in the printer device, the intermediate language data is rendered in the band memory before activating the printer engine with respect to the band in which the intermediate language data is concentrated.
By the methods described above, proper printing is guaranteed. However, because the synchronized band rendering-processing is not possible at high speed, a deterioration in performance does occur. Moreover, when printing using an application that generates large numbers of print commands, the PDL printer performance declines drastically.